using UnityEngine;
using UnityEngine.Events;
//玩家库存管理器
public class PlayerInventoryHolder : InventoryHolder
{
    public static UnityAction OnPLayerInventoryChanged;// 当背包系统发生变化时，会触发该事件

    public static UnityAction<InventorySystem, int> OnPlayerBackpackDisplayRequested;
    private void Start() {
        // 在开始时将当前玩家背包的存档数据保存到 SaveGameManager 中
        SaveGameManager.data.playerInventory = new InventorySaveData(inventorySystem);
    }

    void Update()
    {
        // 检查是否按下键盘上的 "B" 键
        if (Input.GetKeyDown(KeyCode.B))
        {
            // 如果按下了 "B" 键，则触发动态库存显示请求事件，传递次要库存系统作为参数
            OnPlayerBackpackDisplayRequested?.Invoke(inventorySystem, Offset);
        }
    }

    // 加载当前玩家的背包
    protected override void LoadInventory(SaveData data)
    {
        if (data.playerInventory.invSystem != null)
        {
            inventorySystem = data.playerInventory.invSystem;
            OnPLayerInventoryChanged?.Invoke();
        }
    }

    //向背包添加物品
    public bool AddToInventory(InventoryItemData data, int amount)
    {
        // 尝试将物品添加到玩家库存
        if (inventorySystem.AddToInventory(data, amount))
        {
            return true;
        }
        // 如果无法将物品添加到任何库存系统，则返回 false
        return false;
    }
}
